package com.hyper_yang.javase.maps.treeMap;

import com.hyper_yang.javase.collections.pojo.Student;

import java.util.Comparator;
import java.util.StringJoiner;
import java.util.TreeMap;

public class TryTreeMap {
    /*
     treeMap和 treeSet底层原理一样，都是红黑树结构。
        由 键 决定特性: 不重复、无索引、可排序。 [可排序: 对键排序，默认升序，可自定义]
     */
    public static void main(String[] args) {
        // 统计字符出现个数  输出格式 a (5) b (4) c (3) d (2) e (1)
        String s = "aababcabcdabcde";

        TreeMap<Character,Integer> treeMap = new TreeMap<>();

        for (char c : s.toCharArray() ) {
            if (!treeMap.containsKey(c)) {
                treeMap.put(c, 1);
            } else {
                int count = treeMap.get(c);
                count += 1;
                treeMap.put(c, count);
            }
        }

//        for (Character c : treeMap.keySet()) {
//            System.out.print(c + " (" + treeMap.get(c) + ") ");
//        }

//        treeMap.forEach((key,value) -> System.out.print(key + " (" + value + ") "));

//        StringBuilder stringBuilder = new StringBuilder();
//        treeMap.forEach((key,value) -> stringBuilder.append(key).append("(").append(value).append(")"));
//        System.out.println(stringBuilder);

        StringJoiner stringJoiner = new StringJoiner("","","");
        treeMap.forEach((key,value) -> stringJoiner.add(key + "").add("(").add(value + "").add(")"));
        System.out.println(stringJoiner);
//        TreeMap<Student,String> treeMap = new TreeMap<>(new Comparator<Student>() { // 与类中 comparable逻辑不同, 优先用comparator。
//            @Override
//            public int compare(Student o1, Student o2) {
//                System.out.println("-------------------------------------");
//                System.out.println("o1: " + o1); // 要添加的 【this】
//                System.out.println("o2: " + o2); // 已经存在的
//                int sortByAge = o1.getAge() - o2.getAge();
//                return sortByAge == 0 ? o1.getName().compareTo(o2.getName()) : sortByAge;
//            }
//        });
//
//        Student stu1 = new Student("zhangsan",23);
//        Student stu2 = new Student("lisi",23);
//        Student stu3 = new Student("wangwu",25);
//
//        treeMap.put(stu1,"杭州");
//        treeMap.put(stu2,"深圳");
//        treeMap.put(stu3,"江苏");
//
//        System.out.println(treeMap);


//        TreeMap<Integer,String> treeMap = new TreeMap<>(new Comparator<Integer>() {
//            /**
//             *
//             * @param o1 准备添加的
//             * @param o2 红黑树已经存在的
//             * @return 比较规则
//             */
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                return o2 - o1; // 降序
//            }
//        });
//        treeMap.put(6, "可口可乐");
//        treeMap.put(9, "百事可乐");
//        treeMap.put(5, "非常可乐");
//        treeMap.put(8, "雪碧");
//        treeMap.put(1, "芬达");
//        treeMap.put(3, "美年达");
//        treeMap.put(2, "阿萨姆");
//        System.out.println(treeMap);
    }
}
